home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 November / EnigmA AMIGA RUN 02 (1995)(G.R. Edizioni)(IT)[!][issue 1995-11][Skylink CD].iso / earcd / comm / s342q07.lha / vasys.c < prev    next >
C/C++ Source or Header  |  1992-08-28  |  3KB  |  138 lines

  1. /*
  2.  *                vasys.c
  3.  *
  4.  * This holds the system dependent code for the virtual room administrator.
  5.  */
  6.  
  7. /*
  8.  *                history
  9.  *
  10.  * 88Jan25 HAW  Created.
  11.  */
  12.  
  13. #define SYSTEM_DEPENDENT
  14. #define V_ADMIN 1
  15.  
  16. #include "ctdl.h"
  17. #include "stdio.h"
  18. #include "stdlib.h"
  19. #include "stdarg.h"
  20. #include "string.h"
  21. /*#include "sys\stat.h" */
  22.  
  23. extern VirtualRoom *VRoomTab;
  24.  
  25. /*
  26.  *                Contents
  27.  */
  28.  
  29. /*
  30.  * splitF()
  31.  *
  32.  * This function formats format+args to file and console.
  33.  */
  34. void splitIt(char *format, ...)
  35. {
  36.     va_list argptr;
  37.     char garp[1000];
  38.     extern FILE *VaLog;
  39.  
  40.     va_start(argptr, format);
  41.     vsprintf(garp, format, argptr);
  42.     va_end(argptr);
  43.     printf(garp);
  44. if (strLen(garp) > 999) {
  45.     printf("splitIt overflow!!!!");
  46.     exit(3);
  47. }
  48.     if (VaLog != NULL) {
  49.     fprintf(VaLog, garp);
  50.     fflush(VaLog);
  51.     }
  52. }
  53.  
  54. /*
  55.  *  CheckDir(char *name, char *msg)
  56.  *
  57.  * This function performs error checking to see if a directory already exists
  58.  * and emits a warning if so.  If it isn't there then it's a fatal error.
  59.  */
  60. void CheckDir(char *name, char *msg)
  61. {
  62.     if (access(name, 0) != 0)
  63.     crashout(msg);
  64.     else
  65.     printf("Warning: %s already existed?\n", name);
  66. }
  67.  
  68. /*
  69.  * ChkVirtArea()
  70.  *
  71.  * This is the initializer of the virtual room stuff.
  72.  */
  73. void ChkVirtArea()
  74.   {
  75.   if (access("virtual",0) != 0)
  76.     {  /* doesn't exist, create it */
  77.       if (mkdir("virtual") != 0)
  78.       CheckDir("virtual", "Couldn't create the 'virtual' directory!");
  79.     };
  80.   }
  81.  
  82. /*
  83.  * SetVirtAreas()
  84.  *
  85.  * This sets up the subdirectory structure for the given room number.
  86.  */
  87. void SetVirtAreas(int RoomNo)
  88. {
  89.     SYS_FILE sub;
  90.  
  91.     sPrintf(sub, "%d", RoomNo);
  92.  
  93.     if (chdir("virtual") != 0) crashout("chdir failure in SetVirtAreas??");
  94.     if (mkdir(sub) != 0) CheckDir(sub, "Couldn't create a subdir in virtual!");
  95.     sPrintf(sub, "%d\\%s", RoomNo, LD_DIR);
  96.     if (mkdir(sub) != 0) CheckDir(sub, "Couldn't create a subdir in virtual!");
  97.     sPrintf(sub, "%d\\%s", RoomNo, LOCAL_DIR);
  98.     if (mkdir(sub) != 0) CheckDir(sub, "Couldn't create a subdir in virtual!");
  99.     chdir("..");
  100. }
  101.  
  102. /*
  103.  * KillVirtAreas()
  104.  *
  105.  * This kills the subdirectory structure.
  106.  */
  107. void KillVirtAreas(int RoomNo)
  108. {
  109.     char sub[SIZE_SYS_FILE + 30];
  110.     MSG_NUMBER names;
  111.  
  112.     if (chdir("virtual") != 0) crashout("chdir failure in KillVirtAreas??");
  113.     if (!getYesNo("Kill manually")) {
  114.     for (names = VRoomTab[RoomNo].vrLoLocal;
  115.         names <= VRoomTab[RoomNo].vrHiLocal; names++) {
  116.         sPrintf(sub, "%d\\%s\\%ld", RoomNo, LOCAL_DIR, names);
  117.         unlink(sub);
  118.     }
  119.  
  120.     for (names = VRoomTab[RoomNo].vrLoLD; names <= VRoomTab[RoomNo].vrHiLD;
  121.             names++) {
  122.         sPrintf(sub, "%d\\%s\\%ld", RoomNo, LD_DIR, names);
  123.         unlink(sub);
  124.     }
  125.  
  126.     sPrintf(sub, "%d\\%s", RoomNo, LOCAL_DIR);
  127.     if (rmdir(sub) != 0) crashout("system bug: couldn't remove a dir!");
  128.  
  129.     sPrintf(sub, "%d\\%s", RoomNo, LD_DIR);
  130.     if (rmdir(sub) != 0) crashout("system bug: couldn't remove a dir!");
  131.  
  132.     sPrintf(sub, "%d", RoomNo);
  133.     if (rmdir(sub) != 0) crashout("system bug: couldn't remove a dir!");
  134.     }
  135.     chdir("..");
  136. }
  137.  
  138.